// for (var i = 0; i < 3; i++) {
//     setTimeout(function () {
//         console.log(i);  // 3 3 3
//         //在执行到这一行时，发现匿名函数里没有i，然后向往外部作用域找，然后找到的其实是for循环执行完了的i，也就是2++，3
//     }, 0);//因为这个是异步任务 会被存储到任务队列里面最后三次才会打印出来
// }
// 因为i在 匿名函数AO 并没有 i 值，所以会从 globalContext.VO 中查找，i 为 3 i在这里并不是函数的参数

// ------匿名自执行函数有参数 重点
// for (var i = 0; i < 3; i++) {
//     (function (x) {
//         setTimeout(function () {
//             console.log(x);  // 0 1 2
//         }, 1000);
//     })(i)
//     //i传给了x，并且锁在内存中，所以不会变
// }
// console.log('----');

// var data = [];

// for (var i = 0; i < 3; i++) {
//     data[i] = (function (i) {
//         return function () {
//             console.log(i);
//         }
//     })(i);
// }

// data[0]();//0

// console.log('----');
// const a = {
//     valu: -1
// }
// console.log(a.valu);

const arr2 = []
for (let i = 0; i < 3; i++) {
    arr2[i] = function re() { console.log(i); }
}
console.log(arr2[0](), '----')

function foo() {
    bar.apply(null, arguments);

}
function bar(a, b, c) {
    console.log(a, b, c);
}

foo(1, 2, 3)

